package br.com.locanet.bean.impl;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import br.com.locanet.bean.IEntity;
import br.com.locanet.service.impl.ConfiguracaoService;

@Entity
@Table(name="filmes")
@NamedQueries({
	@NamedQuery(name="Filme.findAll",query="select f from Filme f")
})
public class Filme implements IEntity{
	@Id
	@GeneratedValue
	@Column(name="seq_filme")
	private Long id;
	
	@Column(name="titulo_filme")
	private String titulo;
	
	@Column(name="descricao_filme")
	private String descricao;
	
	@Column(name="data_chegada_filme")
	private Date dataChegada;
	
	@Column(name="status_filme")
	private Integer status;
	
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="seq_estilo",referencedColumnName="seq_estilo")
	private EstiloFilme estilo;
	
	@OneToMany(cascade=CascadeType.ALL,mappedBy="filme",fetch=FetchType.LAZY)
	private List<Imagem> imagens;
	
	@OneToMany(cascade=CascadeType.ALL,mappedBy="filme")
	private List<CopiaFilme> copias;
	
	
	public Filme(){
		setEstilo(new EstiloFilme());
		setCopias(new ArrayList<CopiaFilme>());
	}
	public void addCopia(CopiaFilme novaCopia){
		copias.add(novaCopia);
		novaCopia.setFilme(this);
	}
	public EstiloFilme getEstilo() {
		return estilo;
	}
	public void setEstilo(EstiloFilme estilo) {
		this.estilo = estilo;
	}
	public List<CopiaFilme> getCopias() {
		return copias;
	}
	public void setCopias(List<CopiaFilme> copias) {
		this.copias = copias;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Date getDataChegada() {
		return dataChegada;
	}
	public void setDataChegada(Date dataChegada) {
		this.dataChegada = dataChegada;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	
	public Float getPrecoLocacao(){
		/*Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -getConfiguracaoService().getPeriodoInt());
		if (getDataChegada().before(calendar.getTime()))
			return getConfiguracaoService().getPrecoCatalogoFloat();
		return getConfiguracaoService().getPrecoLancamentoFloat();*/
		return null;
	}
	private ConfiguracaoService getConfiguracaoService(){
		return new ConfiguracaoService();
	}
	public List<Imagem> getImagens() {
		return imagens;
	}
	public void setImagens(List<Imagem> imagens) {
		this.imagens = imagens;
	}
}
